#ifndef __NS_CL_H
#define __NS_CL_H


///////////////////////////////////////////////////////////////////
#define ADD_MARKER(s) (s,#s)                    \
    /**/
#define MARKER_LIST                             \
    ( 5, (  ADD_MARKER(Entree),                 \
            ADD_MARKER(Paroi),                  \
            ADD_MARKER(ParoiH),                 \
            ADD_MARKER(ParoiB),                 \
            ADD_MARKER(Sortie)                  \
            )                                   \
      )                                         \
    /**/
///////////////////////////////////////////////////////////////////
#include <research/life-workspace/Fluid-Structure/cldata.hpp>
///////////////////////////////////////////////////////////////////

#if 0 //fluide-structure probleme
#if 0
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::paroi_mobile,cl::ParoiB>(vf::cst(1.)*vf::cst(TIME))       \
    +                                                                   \
    addCL<cl::paroi_mobile,cl::ParoiH>(vf::cst(2.))                     \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Entree>(-Vitesse_Entree*vf::cst(1.e4)*( 1-vf::cos(M_PI*TIME/(2.5e-3)) ) ) \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Sortie>(vf::cst(0.))                     \
    /**/
#elif 0
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::dirichlet_vec,cl::ParoiB>(vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::ParoiH>(vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    /*addCL<cl::neumann_scal,cl::Entree>(-Vitesse_Entree*vf::cst(1.e4)*( 1-vf::cos(M_PI*TIME/(2.5e-3)) ) )*/ \
    addCL<cl::neumann_scal,cl::Entree>(-vf::cst(1.e4) )                 \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Sortie>(vf::cst(0.))                     \
    /**/
#else
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::paroi_mobile,cl::ParoiB>(vf::cst(1.)*vf::cst(TIME))       \
    +                                                                   \
    addCL<cl::paroi_mobile,cl::ParoiH>(vf::cst(2.))                     \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::Entree>( 343.99*(1-vf::Py())*vf::Py()*(- 1357*vf::pow(TIME,9 ) \
                                                                       + 7443*vf::pow(TIME,8 ) \
                                                                       - 17099*vf::pow(TIME,7 ) \
                                                                       + 21255*vf::pow(TIME,6 ) \
                                                                       - 15356*vf::pow(TIME,5 ) \
                                                                       + 6379*vf::pow(TIME,4 ) \
                                                                       - 1368*vf::pow(TIME,3 ) \
                                                                       + 97*vf::pow(TIME,2 ) \
                                                                       + 6*TIME)*vf::oneX() ) \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Sortie>(vf::cst(0.))                     \
    /**/
#endif

#endif

///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////


#if 0

#define KOVASZNAY_LAMBDA(NU)                                    \
    ( 1./(2*NU) - vf::sqrt( (1./(4*NU*NU) ) + 4*M_PI*M_PI ) )   \
    /**/
#define KOVASZNAY_VELOCITY(NU)                                          \
    vf::vec( 1.0 - vf::exp( KOVASZNAY_LAMBDA(NU)*vf::Px() )*vf::cos(2*M_PI*vf::Py()), \
             KOVASZNAY_LAMBDA(NU)/(2*M_PI)*vf::exp(KOVASZNAY_LAMBDA(NU)*vf::Px() )*vf::sin(2*M_PI*vf::Py()) ) \
    /**/
#define FORCE_VOLUMIQUE                                                 \
    vf::vec(                                                            \
            vf::exp( KOVASZNAY_LAMBDA(mu)*vf::Px() )*                   \
            ( (vf::pow(KOVASZNAY_LAMBDA(mu),2) - 4*M_PI*M_PI )          \
              *mu*vf::cos(2*M_PI*vf::Py())-KOVASZNAY_LAMBDA(mu)*vf::exp(KOVASZNAY_LAMBDA(mu)*vf::Px() ) ) \
            ,                                                           \
            vf::exp( KOVASZNAY_LAMBDA(mu)*vf::Px() )*mu*vf::sin(2*M_PI*vf::Py())* \
            (-vf::pow(KOVASZNAY_LAMBDA(mu),2) + 4*M_PI*M_PI)            \
                                                                        ) \
    /**/

#if 0
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::dirichlet_vec,cl::ParoiB>( KOVASZNAY_VELOCITY(mu) )       \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::ParoiH>( KOVASZNAY_VELOCITY(mu) )       \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::Entree>( KOVASZNAY_VELOCITY(mu) )       \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::Sortie>( KOVASZNAY_VELOCITY(mu) )       \
    /**/
#elif 0
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::dirichlet_vec,cl::ParoiB>( vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::ParoiH>( vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::Entree>(10*( vf::Py()*(1.0-vf::Py()) )*vf::oneX() ) \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Sortie>( vf::cst(0.) )                   \
    /**/
#else
#define CL_DEF_NS(TIME)                                                 \
    addCL<cl::paroi_mobile,cl::ParoiB>( vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    addCL<cl::paroi_mobile,cl::ParoiH>( vf::vec(vf::cst(0.),vf::cst(0.) ) ) \
    +                                                                   \
    addCL<cl::dirichlet_vec,cl::Entree>( (TIME*vf::chi(TIME<0.001)+ vf::chi(TIME>=0.001) )*10*( vf::Py()*(1.0-vf::Py()) )*vf::oneX() ) \
    +                                                                   \
    addCL<cl::neumann_scal,cl::Sortie>( vf::cst(0.) )                   \
    /**/

#endif

#endif

#define MECAFLUIDE_DIM 2                        \
    /**/
#define MECAFLUIDE_ORDER_VELOCITY 2             \
    /**/

//#include "kovasznay_cl.cpp"
#include "ecoulement_instat_cl.cpp"
//#include "ecoulement_poiseuille_instat_cl.cpp"

#endif /* __NS_CL_H */
